/**
 * Copyright 2007-2010 非也
 * All rights reserved. 
 * 
 * This library is free software; you can redistribute it and/or modify it under the
 * terms of the GNU Lesser General Public License v3 as published by the Free Software
 * Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License along
 * with this library; if not, see http://www.gnu.org/licenses/lgpl.html.
 *
 */
package org.fireflow2.designer.eclipse.figures.widget;

import org.eclipse.draw2d.Cursors;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Locator;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.DragTracker;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.handles.AbstractHandle;
import org.eclipse.gef.tools.DragEditPartsTracker;
import org.fireflow2.designer.eclipse.figures.CommonFigureInterface;

/**
 *
 * @author 非也 nychen2000@163.com
 * Fire Workflow 官方网站：www.firesoa.com 或者 www.fireflow.org
 *
 */
public class SelectionHandle  extends AbstractHandle {
	public SelectionHandle(GraphicalEditPart owner){
		super(owner,null);
		this.setLocator(new MyLocator(this.getOwner()));
		
		setOpaque(false);
		setBorder(new SelectionHandleBorder());
		setCursor(Cursors.HAND);
	}
	/* (non-Javadoc)
	 * @see org.eclipse.gef.handles.AbstractHandle#createDragTracker()
	 */
	@Override
	protected DragTracker createDragTracker() {
		DragEditPartsTracker tracker = new DragEditPartsTracker(getOwner());
		tracker.setDefaultCursor(getCursor());
		return tracker;
	}
	class MyLocator implements Locator{
		GraphicalEditPart owner = null;;
		public MyLocator(GraphicalEditPart owner){
			this.owner = owner;
		}
		/* (non-Javadoc)
		 * @see org.eclipse.draw2d.Locator#relocate(org.eclipse.draw2d.IFigure)
		 */
		public void relocate(IFigure target) {
			CommonFigureInterface figure = (CommonFigureInterface)owner.getFigure();
			Rectangle bounds = figure.getSelectionHandleBounds();
			target.translateToRelative(bounds);
			target.setBounds(bounds);

		}
	}
}
